]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: Don't try to URL highlight an invisible actor
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 29 Aug 2011 23:10:14 +0000 (19:10 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Fri, 2 Sep 2011 21:23:14 +0000 (17:23 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=656142

js/ui/messageTray.js

index 79f91ade1a959a8b3e6a6c948cf19fdf5512f2c5..86fd12324789cd3180f7c32de501cc44dc8747a1 100644 (file)
@@ -111,12 +111,21 @@ URLHighlighter.prototype = {
 
         this.setMarkup(text, allowMarkup);
         this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) {
+            // Don't try to URL highlight when invisible.
+            // The MessageTray doesn't actually hide us, so
+            // we need to check for paint opacities as well.
+            if (!actor.visible || actor.get_paint_opacity() == 0)
+                return false;
+
             // Keep Notification.actor from seeing this and taking
             // a pointer grab, which would block our button-release-event
             // handler, if an URL is clicked
             return this._findUrlAtPos(event) != -1;
         }));
         this.actor.connect('button-release-event', Lang.bind(this, function (actor, event) {
+            if (!actor.visible || actor.get_paint_opacity() == 0)
+                return false;
+
             let urlId = this._findUrlAtPos(event);
             if (urlId != -1) {
                 let url = this._urls[urlId].url;
@@ -134,6 +143,9 @@ URLHighlighter.prototype = {
             return false;
         }));
         this.actor.connect('motion-event', Lang.bind(this, function(actor, event) {
+            if (!actor.visible || actor.get_paint_opacity() == 0)
+                return false;
+
             let urlId = this._findUrlAtPos(event);
             if (urlId != -1 && !this._cursorChanged) {
                 global.set_cursor(Shell.Cursor.POINTING_HAND);
@@ -145,6 +157,9 @@ URLHighlighter.prototype = {
             return false;
         }));
         this.actor.connect('leave-event', Lang.bind(this, function() {
+            if (!this.actor.visible || this.actor.get_paint_opacity() == 0)
+                return;
+
             if (this._cursorChanged) {
                 this._cursorChanged = false;
                 global.unset_cursor();